import os
import shutil


#  这个函数,是之前用于分类一个模型不同阶段结果
#  做法是,将一张图片,它的各个阶段,放在一个文件夹中
# 下面是分类115张图片，生成的compare_results文件夹
# 这里有改正
def classify_pics(path):
    father_path = path
    sub_dirs, file_names = None, None  # 子文件夹名, 每个子文件夹都有的文件名
    for root, dirs, files in os.walk(father_path):
        if not sub_dirs and dirs:
            sub_dirs = dirs
        if not file_names and files:
            file_names = files
            break


    def mkdir(dir):
        "这个函数创建不存在的 路径文件夹"
        import os
        if not os.path.exists(dir):
            os.makedirs(dir)


    target_father_path = father_path.rsplit("/",maxsplit=1)[0] +  "/按图片名查看图片/"  # 在上级文件夹中创建分类图片文件夹的父文件夹
    print("当前正在分类：",end='')
    for p in file_names:  # 遍历图片名，有多少个图片，就复制多少次
        print(p,end=',')
        # 准备当前图片的目标文件夹
        target_dir_name = os.path.splitext(p)[0]
        target_dir = target_father_path + target_dir_name
        mkdir(target_dir)  # 创建放分类图片的文件夹

        # 进行移动
        for dir in sub_dirs:  # 遍历原有的子文件夹
            file_path = os.path.join(father_path, dir, p)
            # 注意，这里名字要改一下，不然同名文件会覆盖前面的。这里按文件夹名来命名
            new_pic_name = dir + os.path.splitext(p)[1]
            target_file_path = os.path.join(target_dir, new_pic_name)

            shutil.copyfile(file_path, target_file_path)  # 复制


if __name__ == '__main__':

    # 添加路径就可以直接运行。
    # abs_path = "D:/ForFullSavedModel/Use7GModels/1117/compare_results"
    # abs_path = "D:/cycleFusion-project/dataset2/results"
    # abs_path = "D:/pythonProjects/paper04-4 CycleFusionTrainAndTestData/localTestResult/dataset1444"
    # abs_path = r"D:\cycleFusion-project\dataset-1444\fusedmodels\cmpPart"
    # abs_path = r"D:\pythonProjects\paper04-4 CycleFusionTrainAndTestData\localTestResult\datasetmsrs113"
    # abs_path = r"D:\cycleFusion-project\msrs-113\fullResult"
    abs_path = r"D:\cycleFusion-project\msrs-113\cmpResult"

    classify_pics(abs_path)

